package be.hogent.iii.project.common.game.objecten;

import java.io.Serializable;
import java.util.ArrayList;

public class Spel implements Serializable {
    
    private static final long serialVersionUID = 1L;

    private ArrayList<Speler> deelnemers;
    private Speler aanmakerSpel;
    private int huidigeSpelerID;
    private int maxSpelers;
    private String naam;
    private String id;

    public Spel (int maxSpelers, String naam) {
        this.naam = naam;
        this.maxSpelers = maxSpelers;
        deelnemers = new ArrayList<Speler>();
       
    }
     
    public Spel (int maxSpelers, String naam, Speler eigenaar) {
        this.naam = naam;
        this.maxSpelers = maxSpelers;
        deelnemers = new ArrayList<Speler>();
        aanmakerSpel = eigenaar;
        id = aanmakerSpel.getNick() + naam;
    }

    public ArrayList<Speler> getDeelnemers () {
        return deelnemers;
    }
    
    /**
     * Geeft de nickname terug van de speler in het spel wiens ID werd meegegeven. 
     * Leeg indien ID niet gevonden werd.
     * @param id De ID van de speler wiens nickname we willen hebben.
     * @return De nickname
     */
    public String getNickVanDeelnemer(int id) {
        Speler speler = deelnemers.get(id);
        if(speler != null) {
            return speler.getNick();
        }
        else {
            return "";
        }
    }

    public void setDeelnemers (ArrayList<Speler> val) {
        this.deelnemers = val;
    }
    
    public void verwijderDeelnemer(Speler speler){
        deelnemers.remove(speler);
    }
    
    public void addDeelnemer(Speler speler){
        if(deelnemers.size() < maxSpelers && !deelnemers.contains(speler)){
            deelnemers.add(speler);
        }
    }

    public String getNaam() {
        return naam;
    }

    public void setNaam(String naam) {
        this.naam = naam;
    }
    
    public void setHuidigeSpelerID(int huidige) {
        this.huidigeSpelerID = huidige;
    }

    public int getHuidigeSpelerID() {
        return huidigeSpelerID;
    }
    
    public Speler getEigenaar() {
        return aanmakerSpel;
    }

    public void setEigenaar(Speler eigenaar) {
        System.out.println("We zetten de eigenaar: " + eigenaar.getNick());
        this.aanmakerSpel = eigenaar;
    }

    public int getMaxSpelers() {
        return maxSpelers;
    }

    public void setMaxSpelers(int maxSpelers) {
        this.maxSpelers = maxSpelers;
    }

    public String getId() {
        return id;
    }    
}

